Skip to content

《操作系统》期末试卷A (精选06)

一、概念辨析题(判断下列说法的对错,错误的请说明理由,每题 3 分,共计 24 分)

  1. 应用软件是加在裸机上的第一层软件。

::: note 答题区域 请在此处作答并阐述理由(若判定为错): :::

查看答案与解析

答案:错误。

解析: 操作系统是直接安装在裸机(计算机硬件)上的第一层软件。它负责管理计算机的硬件资源,并为上层软件提供基础的运行环境。应用软件则是运行在操作系统之上的软件。


难度: ⭐
考点: #操作系统定义 #计算机系统层次

💡 学习锦囊

📖 相关公式与知识点:

  • 计算机系统层次结构:硬件 $\rightarrow$ 操作系统 $\rightarrow$ 支撑软件 $\rightarrow$ 应用软件。

思路分析

辨析系统软件与应用软件在系统架构中的位置。

易错点

混淆操作系统与应用软件的依赖关系。

🔄 举一反三
  1. 操作系统是计算机系统中的核心系统软件。
    查看练习答案与解析

    答案:正确。 解析:操作系统是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件。

  1. 进程具有动态性和独立性。

::: note 答题区域 请在此处作答并阐述理由(若判定为错): :::

查看答案与解析

答案:正确。

解析: 进程是程序在并发环境中的一次执行过程。动态性是进程最基本的特征(它有生命周期,由创建而生,由撤销而亡);同时,进程也是系统进行资源分配和调度的独立单位,具有独立性。

易错点

部分教材强调进程"最根本"的特征仅为动态性,而独立性是进程的特征之一但并非"最根本"。本题表述为"进程具有动态性和独立性",两者均为进程的重要特征,判断为正确。


难度: ⭐
考点: #进程特性 #动态性

💡 学习锦囊

📖 相关公式与知识点:

  • 进程的五个特征:动态性、并发性、独立性、异步性、结构性。

思路分析

抓住进程与程序的本质区别(动态 vs 静态)。

🔄 举一反三
  1. 进程和程序是一一对应的,一个程序只能对应一个进程。
    查看练习答案与解析

    答案:错误。 解析:一个程序可以对应多个进程(例如同时打开多个记事本);一个进程也可以包含多个程序段。

  1. 采用多道程序设计的系统中,系统的程序道数越多,系统的效率就越高。

::: note 答题区域 请在此处作答并阐述理由(若判定为错): :::

查看答案与解析

答案:错误。

解析: 在一定范围内,程序道数增加可以提高资源利用率。但当道数过多时,进程会激烈竞争 CPU 和内存资源,导致频繁的页面置换(产生“抖动”现象)和上下文切换开销,反而使系统效率急剧下降。


难度: ⭐⭐
考点: #多道程序设计 #系统效率 #抖动

💡 学习锦囊

📖 相关公式与知识点:

  • 多道批处理系统的资源利用率曲线呈抛物线状。

思路分析

思考资源有限性对多道程序并发数量的制约。

🔄 举一反三
  1. 引入多道程序设计技术的根本目的是提高 CPU 的利用率。
    查看练习答案与解析

    答案:正确。 解析:单道环境下 CPU 需等待 I/O,多道技术通过让多道程序交替运行,大幅减少了 CPU 闲置时间。

  1. 存储管理系统负责管理计算机中所有内、外存空间的分配与管理。

::: note 答题区域 请在此处作答并阐述理由(若判定为错): :::

查看答案与解析

答案:错误。

解析: 操作系统的存储管理系统主要负责内存空间的分配、保护和扩充(虚拟内存)。而外存(如磁盘)空间的分配与管理是由文件系统负责的。


难度: ⭐⭐
考点: #存储管理 #文件系统

💡 学习锦囊

📖 相关公式与知识点:

  • 操作系统五大功能:处理机、存储、设备、文件、用户接口。

思路分析

区分“存储”在操作系统语境下通常特指主存(RAM)。

🔄 举一反三
  1. 虚拟存储技术扩展的是外存空间。
    查看练习答案与解析

    答案:错误。 解析:虚拟存储技术借助外存,扩展的是逻辑内存空间,而非外存空间。

  1. 循环轮转调度算法是一种很有用的算法,对于 I/O 设备的分配仍然适用。

::: note 答题区域 请在此处作答并阐述理由(若判定为错): :::

查看答案与解析

答案:错误。

解析: 时间片轮转(RR)调度算法主要用于 CPU 调度以实现分时共享。对于独占性的 I/O 设备(如打印机),若采用轮转分配会导致设备在不同进程间频繁切换,破坏数据的连续性,通常应采用先来先服务(FCFS)策略。


难度: ⭐⭐
考点: #进程调度 #设备分配

💡 学习锦囊

📖 相关公式与知识点:

  • 独占设备、共享设备、虚拟设备的分配特性。

易错点

误认为所有资源都可以采用时间片轮转分配。

🔄 举一反三
  1. 时间片轮转算法适用于实时操作系统。
    查看练习答案与解析

    答案:错误。 解析:实时系统要求高时效性,通常采用基于优先级的抢占式调度,而非固定时间片的轮转。

  1. 在使用信号量机制实现互斥时,互斥信号量的初值一般为 1;使用信号量机制实现同步时,同步信号量的初值为一般为 0(非负整数)。

::: note 答题区域 请在此处作答并阐述理由(若判定为错): :::

查看答案与解析

答案:正确。

解析: 互斥信号量用于保护临界资源,初值为 1 代表资源可用;同步信号量用于协调进程先后顺序,初值通常设为 0,表示前驱事件尚未发生。


难度: ⭐
考点: #信号量机制 #互斥与同步

💡 学习锦囊

📖 相关公式与知识点:

  • P(S) 使得 S 减 1,V(S) 使得 S 加 1。
🔄 举一反三
  1. 若互斥信号量的当前值为 -3,说明有 3 个进程在等待进入临界区。
    查看练习答案与解析

    答案:正确。 解析:信号量小于 0 时的绝对值代表被阻塞在等待队列中的进程数量。

  1. 通常,用户编写的程序中所使用的地址是物理地址。

::: note 答题区域 请在此处作答并阐述理由(若判定为错): :::

查看答案与解析

答案:错误。

解析: 用户程序经过编译和链接后形成的是逻辑地址(又称虚地址)。在程序执行时,由 CPU 的内存管理单元(MMU)通过动态重定位转换为实际的物理地址


难度: ⭐
考点: #逻辑地址 #地址重定位

💡 学习锦囊

📖 相关公式与知识点:

  • 动态重定位:物理地址 = 逻辑地址 + 基址寄存器值。
🔄 举一反三
  1. 动态重定位是在程序执行过程中,每次访问内存时进行的。
    查看练习答案与解析

    答案:正确。 解析:动态重定位由硬件地址转换机构在指令执行时实时完成。

  1. 操作系统提供给编程人员的接口是高级语言。

::: note 答题区域 请在此处作答并阐述理由(若判定为错): :::

查看答案与解析

答案:错误。

解析: 操作系统提供给编程人员的接口是系统调用(System Call)。高级语言是编写程序的工具,它们通过底层封装的系统调用向 OS 请求服务。


难度: ⭐
考点: #操作系统接口 #系统调用

💡 学习锦囊

📖 相关公式与知识点:

  • 系统调用工作在内核态(管态)。
🔄 举一反三
  1. 系统调用运行在用户态。
    查看练习答案与解析

    答案:错误。 解析:系统调用通过陷入(Trap)指令进入内核态执行。


二、简答题(每题 4 分,共 20 分)

  1. 现代操作系统为什么普遍采用多道程序设计技术,其特点是什么?

::: note 答题区域 请在此处填写答案: :::

查看答案与解析

答案

  • 采用原因:提高 CPU 和其他系统资源的利用率,增加系统的吞吐量。
  • 主要特点
    1. 多道:内存中同时存放多道独立的程序。
    2. 宏观并行:多道程序都处于运行状态,但尚未结束。
    3. 微观串行:在单处理机上,各程序轮流占用 CPU 执行。

难度: ⭐⭐
考点: #多道程序设计 #资源利用率

💡 学习锦囊

思路分析

从提高资源效率的动机出发,阐述多道技术在时间和空间上的特性。

🔄 举一反三
  1. 简述分时系统的主要特征。
    查看练习答案与解析

    答案:同时性、交互性、独立性、及时性。

  1. 什么叫线程?在实际工程应用中的线程与进程有什么区别?

::: note 答题区域 请在此处填写答案: :::

查看答案与解析

答案

  • 定义:线程是进程中的一个实体,是被系统独立调度和分派的基本单位
  • 主要区别
    1. 调度粒度:引入线程后,线程是独立调度的基本单位,而进程是拥有资源的基本单位
    2. 资源拥有:线程基本不拥有系统资源,但共享所属进程的全部资源。
    3. 并发性:不仅进程间可并发,同一进程内的多个线程间亦可并发。
    4. 系统开销:线程的创建、销毁及切换开销远小于进程。

难度: ⭐⭐
考点: #线程与进程区别 #调度单位

💡 学习锦囊

思路分析

围绕“资源所有权”与“执行流调度”两个核心概念进行对比。

🔄 举一反三
  1. 引入线程机制后,进程的切换是否一定会引起线程的切换?
    查看练习答案与解析

    答案:是。 解析:因为线程属于特定进程,切换进程必然伴随着线程所属环境的改变。

  1. 假设 P、V 操作使用信号量 S 管理某个共享资源,请问当 $S > 0$$S = 0$$S < 0$ 时,它们的物理意义是什么?如何改变信号量的值?

::: note 答题区域 请在此处填写答案: :::

查看答案与解析

答案

  • 物理意义
    • $S > 0$:表示当前系统中可用的该类资源数量。
    • $S = 0$:表示资源刚好用尽,且没有进程在等待资源。
    • $S < 0$$|S|$ 表示当前阻塞在信号量队列中等待资源的进程个数。
  • 改变方式
    • 通过 P 操作请求资源:$S = S - 1$
    • 通过 V 操作释放资源:$S = S + 1$

难度: ⭐⭐
考点: #信号量物理意义 #P-V操作

💡 学习锦囊

易错点

容易忽略 $S < 0$ 时取绝对值代表进程数。

🔄 举一反三
  1. 若 S 的初始值为 5,当前值为 -2,说明有多少个进程处于等待状态?
    查看练习答案与解析

    答案:2 个。 解析$|S| = |-2| = 2$

  1. 什么是设备独立性?当前的主流操作系统中如何实现设备独立性?

::: note 答题区域 请在此处填写答案: :::

查看答案与解析

答案

  • 定义:设备独立性(无关性)指应用程序独立于所使用的物理设备,用户编程时仅需使用逻辑设备名
  • 实现方式: 操作系统通过建立逻辑设备表(LUT),在 I/O 请求时将逻辑设备名映射为具体的物理设备名,并调用相应的设备驱动程序。

难度: ⭐⭐
考点: #设备独立性 #逻辑设备表

💡 学习锦囊

📖 相关公式与知识点:

  • 设备驱动程序(Device Driver)屏蔽了硬件差异。
🔄 举一反三
  1. 设备独立性的主要优点是什么?
    查看练习答案与解析

    答案:增强了程序的易移植性和设备分配的灵活性。

  1. 什么是临界资源?什么是临界区?

::: note 答题区域 请在此处填写答案: :::

查看答案与解析

答案

  • 临界资源:在一段时间内只允许一个进程访问的资源(如打印机)。
  • 临界区:每个进程中访问临界资源的代码段

难度: ⭐
考点: #临界资源 #临界区

💡 学习锦囊

思路分析

区分“资源实体”与“执行代码”。

🔄 举一反三
  1. 同步机制应遵循的四个基本准则是什么?
    查看练习答案与解析

    答案:空闲让进、忙则等待、有限等待、让权等待。


三、计算分析题(共计 44 分)

  1. (8 分)在一个页式虚拟存储内存管理系统中,页面大小为 1K 字节。某个进程分配到的内存块数为 3,并按下列虚地址顺序访问内存单元:1201,2153,1868,0516,4536,1396,0039,3301,0734,1862。上述数字均为十进制数,且开始时内存中尚未装入任何页。试用先进先出(FIFO)和最近最久未使用(LRU)两种置换算法,分别计算程序访问过程中所发生的缺页率。

::: note 答题区域 请在此处列出换算过程及缺页率计算: :::

查看答案与解析

答案

  • 页号换算: 访问页号 = 虚地址 / 1024。 换算后的页号访问序列为:1, 2, 1, 0, 4, 1, 0, 3, 0, 1

  • FIFO 算法

    访问页号1210410301
    块 11111444400
    块 2222211111
    块 30000333
    缺页
    缺页次数:7次;缺页率 = 70%

    FIFO 队列变化过程$[1] \to [1,2] \to [1,2] \to [1,2,0] \to [2,0,4] \to [0,4,1] \to [0,4,1] \to [4,1,3] \to [1,3,0] \to [1,3,0]$。每次缺页时淘汰队首(最早进入)的页面。

  • LRU 算法

    访问页号1210410301
    块 11111111111
    块 2222444333
    块 30000000
    缺页
    缺页次数:5次;缺页率 = 50%

    LRU 栈变化过程(栈顶为最近访问):$[1] \to [2,1] \to [1,2] \to [0,1,2] \to [4,0,1] \to [1,4,0] \to [0,1,4] \to [3,0,1] \to [0,3,1] \to [1,0,3]$。每次缺页时淘汰栈底(最久未使用)的页面。


难度: ⭐⭐⭐
考点: #FIFO #LRU #缺页率

💡 学习锦囊

思路分析

首要步骤是完成从绝对地址到逻辑页号的整除转换。

🔄 举一反三
  1. 若分配 4 个物理块,该序列的 FIFO 缺页率是否一定会降低?
    查看练习答案与解析

    答案:不一定,可能存在 Belady 异常。 解析:Belady 异常是指在 FIFO 页面置换算法中,为进程分配更多的物理块时,缺页率反而上升的反常现象。例如,对于访问序列 1,2,3,4,1,2,5,1,2,3,4,5,分配 3 个物理块时缺页 9 次,分配 4 个物理块时缺页反而增至 10 次。这是 FIFO 算法特有的缺陷,LRU 算法不会出现此现象(LRU 属于栈式算法,满足单调性)。

  1. (10 分)设系统中有 3 种类型的资源(A,B,C)和 5 个进程(P1,P2,P3,P4,P5),A 资源的数量为 17,B 资源的数量为 5,C 资源的数量为 20。在 T0 时刻系统状态见下表。
进程最大需求 (A,B,C)已分配 (A,B,C)
P15, 5, 92, 1, 2
P25, 3, 64, 0, 2
P34, 0, 114, 0, 5
P44, 2, 52, 0, 4
P54, 2, 43, 1, 4

剩余资源数:(2, 3, 3)。系统采用银行家算法。 (1) T0 时刻是否为安全状态?若是,请给出安全序列。
(2) 在 T0 时刻进程 P4 请求资源(0,3,4),能否实施分配?为什么?
(3) 在(2)基础上,进程 P4 请求资源(2,0,1),是否能实施分配?为什么?
(4) 在(3)基础上,进程 P1 请求资源(0,2,0),是否能实施分配?为什么?

::: note 答题区域 请在此处详细写出矩阵推导及判定步骤: :::

查看答案与解析

答案

  • Need 矩阵 (Max - Allocation): P1(3,4,7), P2(1,3,4), P3(0,0,6), P4(2,2,1), P5(1,1,0)。

  • (1)安全状态判定: 初始 Avail = (2,3,3)。

    • P4: Need(2,2,1) $\le$ Avail(2,3,3),执行后 Avail = (4,3,7)。
    • P5: Need(1,1,0) $\le$ Avail(4,3,7),执行后 Avail = (7,4,11)。
    • P2: Need(1,3,4) $\le$ Avail(7,4,11),执行后 Avail = (11,4,13)。
    • P1: Need(3,4,7) $\le$ Avail(11,4,13),执行后 Avail = (13,5,15)。
    • P3: Need(0,0,6) $\le$ Avail(13,5,15),执行后 Avail = (17,5,20)。 安全序列:P4 $\rightarrow$ P5 $\rightarrow$ P2 $\rightarrow$ P1 $\rightarrow$ P3。
  • (2)P4 请求 (0,3,4)不能。因为 $Request_4(0,3,4) \nleq Need_4(2,2,1)$ (3 > 2),超出最大需求。

  • (3)P4 请求 (2,0,1)

    1. $Request(2,0,1) \le Need(2,2,1)$$\le Avail(2,3,3)$
    2. 试探分配后 Avail 变为 (0,3,2),仍可找到安全序列 P4 $\rightarrow$ P5 $\rightarrow$ P2 $\rightarrow$ P1 $\rightarrow$ P3。
  • (4)P1 请求 (0,2,0)不能。分配后 Avail 变为 (0,1,2),此时没有任何进程的 Need 可被满足,系统将进入不安全状态。


难度: ⭐⭐⭐
考点: #银行家算法 #安全性检查

💡 学习锦囊

📖 相关公式与知识点:

  • $Need = Max - Allocation$
  • 银行家算法请求检查条件:
    1. $Request_i \le Need_i$
    2. $Request_i \le Available$

思路分析

每次请求后,必须严格假设分配并重新执行安全性算法,安全序列不唯一。

🔄 举一反三
  1. 若 T0 时刻 P4 申请 (1, 2, 1),系统是否安全?
    查看练习答案与解析

    答案:安全。 解析:Request $\le$ Need 且 $\le$ Avail,试探分配后 Avail 为 (1,1,2),可找到安全序列 P4->P5->P2->P1->P3。

  1. (9 分)在一个批处理系统中,有两个作业进程。有一作业序列,其到达时刻及估计运行时间列表如下。
作业到达时刻估计运行时间(分)
110:0035
210:1030
310:1545
410:2020
510:3030

调度规则:作业调度采用最高响应比优先(HRRN);进程调度采用抢占式短作业优先(SRTF)。 (1) 列出各作业的执行时间片断。
(2) 计算这批作业的平均周转时间。

::: note 答题区域 请在此处列出调度流程及时间线: :::

查看答案与解析

答案

  • (1)执行时间序列

    • 10:00: 作业 1 进入批处理,开始运行。
    • 10:10: 作业 2 到达,进入内存(批处理满)。SRTF 比较:P1(剩25分) < P2(30分),P1 继续。
    • 10:35: P1 结束。作业 4 以高响应比进入内存。比较:P4(20) < P2(30),P4 抢占运行。
    • 10:55: P4 结束。作业 3 进入内存。P2(30) < P3(45),P2 运行。
    • 11:25: P2 结束。作业 5 进入。P5(30) < P3(45),P5 运行。
    • 11:55: P5 结束。P3 独占运行至 12:40
  • (2)周转时间

    • 作业 1: 35 分;作业 2: 75 分;作业 3: 145 分;作业 4: 35 分;作业 5: 85 分。
    • 平均周转时间 = 75 分

难度: ⭐⭐⭐
考点: #HRRN #SRTF

💡 学习锦囊

📖 相关公式与知识点:

  • 响应比 $R_p = 1 + \frac{等待时间}{运行时间}$
  • 抢占式短作业优先(SRTF)以“剩余运行时间”为调度依据。
🔄 举一反三
  1. 若系统只有 1 道批处理,采用 SJF,作业 2 的周转时间是多少?
    查看练习答案与解析

    答案:85 分钟。 解析:作业运行顺序为 1(10:00-10:35)->4(10:35-10:55)->2(10:55-11:25)。完成时间 11:25。周转时间 $11:25 - 10:10 = 75$ 分钟?不对,之前 1 道批处理的顺序需要重新计算。

  1. (9 分)某操作系统采用页式存储管理模式,用户编程空间 32 页,主存 16KB。用户程序长 10 页。页表:0 $\rightarrow$ 8, 1 $\rightarrow$ 7, 2 $\rightarrow$ 4, 3 $\rightarrow$ 10。地址转换:0AC5H、1AC5H、3AC5H。

::: note 答题区域 请在此处写出地址拆分与页表映射过程: :::

查看答案与解析

答案: 页面大小 $1KB = 400H$

  • 0AC5H: 页号 2,偏移 2C5H。映射至块 4。物理地址 = 12C5H
  • 1AC5H: 页号 6。未调入内存,触发缺页中断
  • 3AC5H: 页号 14。页号 $\ge 10$(超出长度),触发越界异常

难度: ⭐⭐
考点: #页式存储 #地址映射

💡 学习锦囊

📖 相关公式与知识点:

  • 物理地址计算:$P = 块号 \times L + d$$L$ 为页长)。
🔄 举一反三
  1. 逻辑地址 2BC5H 的物理地址是多少?
    查看练习答案与解析

    答案:越界中断。 解析$2BC5H / 400H = 10$(页号),超出用户程序长度(10页,合法页号为0-9)。

  1. (8 分)混合索引文件系统,13 个地址项(10直接、1一次间接、1二次、1三次)。盘块 1KB,地址项 4B。当文件长度大于多少时采用三次间接?

::: note 答题区域 请在此处列出容量累加过程: :::

查看答案与解析

答案: 单个块可存放盘块号数量 = $1024 / 4 = 256$ 个。 前三级索引总容量 = $(10 + 256 + 256^2) \times 1KB = 65802 KB$。 故文件大于 65802 KB 时采用三次间接。


难度: ⭐⭐
考点: #混合索引

💡 学习锦囊

📖 相关公式与知识点:

  • 一次间接寻址空间 = $\frac{盘块大小}{地址项大小} \times 盘块大小$
🔄 举一反三
  1. 若盘块大小为 4KB,采用二次间接可支持的最大文件是多大?
    查看练习答案与解析

    答案$4GB$解析:单块项数 $4KB/4B=1024$。二次间接容量 = $1024 \times 1024 \times 4KB = 4GB$


四、应用题(共计 12 分)

有三个并发进程 R、M、P,共享一个可循环使用的缓冲区 B(N 个单元),不允许同时访问。R 读入字符存入 B;M 处理 B 中字符(空格改逗号);P 取出打印。 (1)分析互斥和同步关系;(2)设置信号量;(3)写出 P、V 操作程序。

::: note 答题区域 请在此处书写 PV 操作代码逻辑: :::

查看答案与解析

答案

  • (1)关系

    • 互斥:三进程不能同时写/读缓冲区 B。
    • 同步:R 需等空位;M 需等 R 写入;P 需等 M 处理。
  • (2)信号量

    • empty = N, full_R = 0, full_M = 0, mutex = 1
  • (3)程序

    c
    // 进程 R
    while(1) {
        char c = read();
        P(empty); P(mutex);
        deposit(c);
        V(mutex); V(full_R);
    }
    
    // 进程 M
    while(1) {
        P(full_R); P(mutex);
        update_space();
        V(mutex); V(full_M);
    }
    
    // 进程 P
    while(1) {
        P(full_M); P(mutex);
        print();
        V(mutex); V(empty);
    }

难度: ⭐⭐⭐
考点: #PV同步机制

💡 学习锦囊

思路分析

经典的生产者-消费者模型扩展,通过两组同步信号量衔接上下游。

🔄 举一反三
  1. 若缓冲区 B 为无限大,信号量设置有何变化?
    查看练习答案与解析

    答案:去掉 empty 信号量及其 P 操作。

你正在阅读的是会员专属文档,💕 限时特惠进行中
你尚未登录,目前新用户可获3天体验会员,去登录